
Introduction
In the philosophy history, schools have been founded and developed,
made their statements, and understood phenomena and principles in
different aspects. They were also influenced by each other during the
long history of philosophy. (Hopefully this will raise your interest in
philosophy!!)
By this data mining based on more than 300,000 sentences collected
from the major schools of philosophy, you would directly and simply
capture the brief ideas, characteristics and relationships among
them.
Data Source: https://www.kaggle.com/datasets/kouroshalizadeh/history-of-philosophy
Which school is most “talkative”?
Some schools of philosophy are more likely to generate shorter and
more concise statements to support their claims, while others prefer to
indicate and explain their points of view using longer and complicated
sentences, which could be observed from below.
(But actually, sometimes the simpler sentences in philosophy require
and imply more costs and discussion in understanding them!)
According to the boxplot, Nietzsche and Plato have minimum two median
sentence lengths, 87 and 95 words respectively. Empiricism and
Capitalism with median sentence lengths 160 and 168, almost twice than
the nietzsche, in contrast, could be more descriptive and explanatory
with longer sentences.

Implications and Relationship between Schools of Philosophy
Suppose you are not quite familiar with any of these schools of
thoughts in Philosophy. You can still figure out what the school is and
what the main topic it focuses on by looking at these word clouds!
Take a Guess: Which school is it?

Yes! These words belong to the corpus of Feminism
because words including “women”, “wife”, “girl”, and “mother” show high
frequency in sentences. Also, the appearance of the words “men”,
“black”, “marriage”, “children”, etc. indicates that the topics as race
and family relation might be included in the discussion of Feminism.
Take a Guess: What about this?

Empiricism! Empiricism emphasizes the central role
of empirical evidence in the formation of “ideas”. It holds that the
“knowledge” is primarily gained from previous “experience” and “senses”’
with evidence (“evident”).
(Words quoted above are shown in the word cloud of empiricism.)
Moreover, as mentioned before, the schools of philosophy might be
influenced by other schools. Based on the word clouds, some important
associations can be observed and pointed out, which would be helpful to
study not only the school itself but also from a comparative
perspective.
For instance, Capitalism and
Communism are both concerned about economic systems and
concentrate on “labour”, “money”, and “commodities” according to the
word clouds. But they are always in the opposite position in most
discussions these days because they think very differently. The words
“interest”, “market”, “trade”, “equal”, etc. support Capitalism’s main
idea of individual profit earning, private ownership and free market.
However, Communism advocates governmental control over resources and
products, shown by the high frequency of “power” and “political” in word
cloud. The interesting thing is “capitalist” does also occur very
frequently, which might indicate that there are sentences to argue
against or make comparison to Capitalism in discussion of Communism!


Another example could be the relation described by text data between
schools of Aristotle and Plato.
Aristotle was the student of Plato in the Academy. Although Aristotle’s
philosophy is relatively more practical than Plato’s, they could be
traced back to a similar source. They both believed that a “just” person
with “virtue” and the “just” “actions” are good.
(Words quoted above are shown in the word cloud of Plato and
Aristotle.)


Emotional Difference between Schools
By observing the interactive barplot by schools below, you will
understand the attitudes of schools and how they emotionally express
themselves. Almost all schools receive a high sentiment score in trust.
Feminism shows more anticipation and less disgust in their sentences.
Plato wins in joy, which corresponds to “virtue”, “good” and “love” in
the word cloud. The anger and sadness in Communism could also possibly
be a sign of historical revolution happening and class struggling
related to it!
Emotions Winner among Schools
| anger |
communism |
0.1030000 |
| anticipation |
feminism |
0.1735429 |
| disgust |
analytic |
0.0686709 |
| fear |
german_idealism |
0.1306962 |
| joy |
plato |
0.1329193 |
| sadness |
communism |
0.1100000 |
| surprise |
continental |
0.0705354 |
| trust |
continental |
0.2747676 |
Discussion
In this Philosophy for Everyone, questions and features and
understanding based on text data mining of corpus of major schools of
philosophy were discussed including sentence lengths, word frequency,
and sentiment analysis. Don’t forget to always check more about history
of philosophy after read this insights-gainnig story!
LS0tDQp0aXRsZTogIlBoaWxvc29waHkgZm9yIEV2ZXJ5b25lOiBXaGF0IEhhcHBlbmVkIGJldHdlZW4gU2Nob29scyBvZiBQaGlsb3NvcGh5PyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiFbXShwcm9qZWN0MVxccDEucG5nKQ0KDQojIyBJbnRyb2R1Y3Rpb24gDQoNCkluIHRoZSBwaGlsb3NvcGh5IGhpc3RvcnksIHNjaG9vbHMgaGF2ZSBiZWVuIGZvdW5kZWQgYW5kIGRldmVsb3BlZCwgbWFkZSB0aGVpciBzdGF0ZW1lbnRzLCBhbmQgdW5kZXJzdG9vZCBwaGVub21lbmEgYW5kIHByaW5jaXBsZXMgaW4gZGlmZmVyZW50IGFzcGVjdHMuIFRoZXkgd2VyZSBhbHNvIGluZmx1ZW5jZWQgYnkgZWFjaCBvdGhlciBkdXJpbmcgdGhlIGxvbmcgaGlzdG9yeSBvZiBwaGlsb3NvcGh5LiAoSG9wZWZ1bGx5IHRoaXMgd2lsbCByYWlzZSB5b3VyIGludGVyZXN0IGluIHBoaWxvc29waHkhISkNCg0KQnkgdGhpcyBkYXRhIG1pbmluZyBiYXNlZCBvbiBtb3JlIHRoYW4gMzAwLDAwMCBzZW50ZW5jZXMgY29sbGVjdGVkIGZyb20gdGhlIG1ham9yIHNjaG9vbHMgb2YgcGhpbG9zb3BoeSwgeW91IHdvdWxkIGRpcmVjdGx5IGFuZCBzaW1wbHkgY2FwdHVyZSB0aGUgYnJpZWYgaWRlYXMsIGNoYXJhY3RlcmlzdGljcyBhbmQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGVtLiANCg0KRGF0YSBTb3VyY2U6IGh0dHBzOi8vd3d3LmthZ2dsZS5jb20vZGF0YXNldHMva291cm9zaGFsaXphZGVoL2hpc3Rvcnktb2YtcGhpbG9zb3BoeSANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShiZWVzd2FybSkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KDQpsaWJyYXJ5KHRtKQ0KbGlicmFyeShzeXV6aGV0KQ0KbGlicmFyeSh0ZXh0cmV1c2UpDQpsaWJyYXJ5KGdncHVicikNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkodmlzdGltZSkNCmxpYnJhcnkod29yZGNsb3VkKQ0KDQpgYGANCg0KDQpgYGB7cn0NCmRmIDwtIHJlYWRfY3N2KCJwaGlsb3NvcGh5X2RhdGFcXHBoaWxvc29waHlfZGF0YS5jc3YiKQ0KIyBoZWFkKGRmKQ0KDQojIHVuaXF1ZShkZiRzY2hvb2wpDQojIHVuaXF1ZShkZiRhdXRob3IpDQoNCiMgc3VtKGlzLm5hKGRmKSkNCg0KZGYueWVhciA8LSBkZiAlPiUgZ3JvdXBfYnkoc2Nob29sKSAlPiUgDQogIHN1bW1hcml6ZShlYXJsaWVzdF9wdWJsaWNhdGlvbl9kYXRlID0gbWluKG9yaWdpbmFsX3B1YmxpY2F0aW9uX2RhdGUpKSAlPiUNCiAgYXJyYW5nZShlYXJsaWVzdF9wdWJsaWNhdGlvbl9kYXRlKQ0KDQprYWJsZShkZi55ZWFyLCBjYXB0aW9uID0gIkZpcnN0IFB1YmxpY2F0aW9uIFllYXIgb2YgU2Nob29scyIpIA0KDQpgYGANCg0KIyMgV2hpY2ggc2Nob29sIGlzIG1vc3Qg4oCcdGFsa2F0aXZl4oCdPyANCg0KU29tZSBzY2hvb2xzIG9mIHBoaWxvc29waHkgYXJlIG1vcmUgbGlrZWx5IHRvIGdlbmVyYXRlIHNob3J0ZXIgYW5kIG1vcmUgY29uY2lzZSBzdGF0ZW1lbnRzIHRvIHN1cHBvcnQgdGhlaXIgY2xhaW1zLCB3aGlsZSBvdGhlcnMgcHJlZmVyIHRvIGluZGljYXRlIGFuZCBleHBsYWluIHRoZWlyIHBvaW50cyBvZiB2aWV3IHVzaW5nIGxvbmdlciBhbmQgY29tcGxpY2F0ZWQgc2VudGVuY2VzLCB3aGljaCBjb3VsZCBiZSBvYnNlcnZlZCBmcm9tIGJlbG93LiANCg0KKEJ1dCBhY3R1YWxseSwgc29tZXRpbWVzIHRoZSBzaW1wbGVyIHNlbnRlbmNlcyBpbiBwaGlsb3NvcGh5IHJlcXVpcmUgYW5kIGltcGx5IG1vcmUgY29zdHMgYW5kIGRpc2N1c3Npb24gaW4gdW5kZXJzdGFuZGluZyB0aGVtISkNCg0KQWNjb3JkaW5nIHRvIHRoZSBib3hwbG90LCBOaWV0enNjaGUgYW5kIFBsYXRvIGhhdmUgbWluaW11bSB0d28gbWVkaWFuIHNlbnRlbmNlIGxlbmd0aHMsIDg3IGFuZCA5NSB3b3JkcyByZXNwZWN0aXZlbHkuIEVtcGlyaWNpc20gYW5kIENhcGl0YWxpc20gIHdpdGggbWVkaWFuIHNlbnRlbmNlIGxlbmd0aHMgMTYwIGFuZCAxNjgsIGFsbW9zdCB0d2ljZSB0aGFuIHRoZSBuaWV0enNjaGUsIGluIGNvbnRyYXN0LCBjb3VsZCBiZSBtb3JlIGRlc2NyaXB0aXZlIGFuZCBleHBsYW5hdG9yeSB3aXRoIGxvbmdlciBzZW50ZW5jZXMuIA0KDQoNCmBgYHtyfQ0KZGYuZGF0ZSA8LSBkZiAlPiUgZ3JvdXBfYnkoc2Nob29sKSAlPiUNCiAgc3VtbWFyaXplKGZpcnN0X3B1Ymxpc2hlZF9kYXRlID0gbWluKG9yaWdpbmFsX3B1YmxpY2F0aW9uX2RhdGUpLCANCiAgICAgICAgICAgIG1lZF9sZW4gPSBtZWRpYW4oc2VudGVuY2VfbGVuZ3RoKSkgJT4lDQogIHVuZ3JvdXAoKQ0KDQpkZi5maXJzdC5kYXRlIDwtIGRmICU+JSBsZWZ0X2pvaW4oZGYuZGF0ZSkgJT4lIA0KICBtdXRhdGUoc2Nob29sID0gcmVvcmRlcihmYWN0b3Ioc2Nob29sKSwgbWVkX2xlbikpDQoNCmRmLm1lYW4gPC0gZGYuZmlyc3QuZGF0ZSAlPiUgc2VsZWN0KHNjaG9vbCwgbWVkX2xlbikNCiMgdW5pcXVlKGRmLm1lYW4pDQoNCmxlbl9ieV9zY2hvb2wgPSBnZ3Bsb3QoZGF0YT1kZi5maXJzdC5kYXRlLCANCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHg9cmVvcmRlcihzY2hvb2wsIG1lZF9sZW4pLCB5PXNlbnRlbmNlX2xlbmd0aCkpICsNCiAgZ2VvbV9ib3hwbG90KGFlcyhmaWxsPXNjaG9vbCkpICsgDQogIGxhYnModGl0bGU9IlNlbnRlbmNlIExlbmd0aCBmb3IgU2Nob29scyIpICsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA0KSkgDQoNCmxlbl9ieV9zY2hvb2wNCg0KYGBgDQoNCiMjIEltcGxpY2F0aW9ucyBhbmQgUmVsYXRpb25zaGlwIGJldHdlZW4gU2Nob29scyBvZiBQaGlsb3NvcGh5DQoNClN1cHBvc2UgeW91IGFyZSBub3QgcXVpdGUgZmFtaWxpYXIgd2l0aCBhbnkgb2YgdGhlc2Ugc2Nob29scyBvZiB0aG91Z2h0cyBpbiBQaGlsb3NvcGh5LiBZb3UgY2FuIHN0aWxsIGZpZ3VyZSBvdXQgd2hhdCB0aGUgc2Nob29sIGlzICBhbmQgd2hhdCB0aGUgbWFpbiB0b3BpYyBpdCBmb2N1c2VzIG9uIGJ5IGxvb2tpbmcgYXQgdGhlc2Ugd29yZCBjbG91ZHMhDQoNCiMjIyMgVGFrZSBhIEd1ZXNzOiBXaGljaCBzY2hvb2wgaXMgaXQ/DQoNCmBgYHtyfQ0KDQp3b3JkX2Nsb3VkIDwtIGZ1bmN0aW9uKHNjaG9vbF9uYW1lLCBkZil7DQogIA0KICBkZi5zY2hvb2wgPC0gZGYgJT4lIGZpbHRlcihzY2hvb2wgPT0gc2Nob29sX25hbWUpICU+JSBzZWxlY3Qoc2VudGVuY2VfbG93ZXJlZCkNCiAgIyBwcmludChsZW5ndGgoZGYuc2Nob29sJHNlbnRlbmNlX2xvd2VyZWQpKQ0KICAjIHByaW50KGhlYWQoZGYuc2Nob29sKSkNCiAgDQogIGRvY3MgPC0gQ29ycHVzKFZlY3RvclNvdXJjZShkZi5zY2hvb2wpKQ0KICAjIGRvY3MNCiAgDQogICMgaW5zcGVjdChkb2NzKQ0KICBkb2NzIDwtdG1fbWFwKGRvY3MsIHN0cmlwV2hpdGVzcGFjZSkNCiAgZG9jcyA8LSB0bV9tYXAoZG9jcywgcmVtb3ZlV29yZHMsIHN0b3B3b3JkcygiZW5nbGlzaCIpKQ0KICBkb2NzIDwtIHRtX21hcChkb2NzLCByZW1vdmVXb3JkcywgY2hhcmFjdGVyKDApKQ0KICBkb2NzIDwtIHRtX21hcChkb2NzLCByZW1vdmVQdW5jdHVhdGlvbikNCiAgDQogIHRkbS5hbGwgPC0gVGVybURvY3VtZW50TWF0cml4KGRvY3MpDQoNCiAgbSA8LSBhcy5tYXRyaXgodGRtLmFsbCkNCiAgdiA8LSBzb3J0KHJvd1N1bXMobSksZGVjcmVhc2luZz1UUlVFKQ0KICBkIDwtIGRhdGEuZnJhbWUod29yZCA9IG5hbWVzKHYpLGZyZXE9dikNCiAgIyBwcmludChoZWFkKGQpKQ0KDQogIHJldHVybihkKQ0KICANCiAgDQp9DQoNCg0KYGBgDQoNCmBgYHtyfQ0KZC5mZW0gPC0gd29yZF9jbG91ZCgiZmVtaW5pc20iLCBkZikNCg0KDQpwLmZlbSA8LSB3b3JkY2xvdWQoZC5mZW0kd29yZCwgZC5mZW0kZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KYGBgDQoNClllcyEgVGhlc2Ugd29yZHMgYmVsb25nIHRvIHRoZSBjb3JwdXMgb2YgKipGZW1pbmlzbSoqIGJlY2F1c2Ugd29yZHMgaW5jbHVkaW5nIOKAnHdvbWVu4oCdLCDigJx3aWZl4oCdLCDigJxnaXJs4oCdLCBhbmQg4oCcbW90aGVy4oCdIHNob3cgaGlnaCBmcmVxdWVuY3kgaW4gc2VudGVuY2VzLiBBbHNvLCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgd29yZHMg4oCcbWVu4oCdLCDigJxibGFja+KAnSwg4oCcbWFycmlhZ2XigJ0sIOKAnGNoaWxkcmVu4oCdLCBldGMuIGluZGljYXRlcyB0aGF0IHRoZSB0b3BpY3MgYXMgcmFjZSBhbmQgZmFtaWx5IHJlbGF0aW9uIG1pZ2h0IGJlIGluY2x1ZGVkIGluIHRoZSBkaXNjdXNzaW9uIG9mIEZlbWluaXNtLiANCg0KIyMjIyBUYWtlIGEgR3Vlc3M6IFdoYXQgYWJvdXQgdGhpcz8NCg0KYGBge3J9DQoNCmQuZW1wIDwtIHdvcmRfY2xvdWQoImVtcGlyaWNpc20iLCBkZikNCg0KDQpwLmVtcCA8LSB3b3JkY2xvdWQoZC5lbXAkd29yZCwgZC5lbXAkZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KDQpgYGANCg0KKipFbXBpcmljaXNtISoqIEVtcGlyaWNpc20gZW1waGFzaXplcyB0aGUgY2VudHJhbCByb2xlIG9mIGVtcGlyaWNhbCBldmlkZW5jZSBpbiB0aGUgZm9ybWF0aW9uIG9mIOKAnGlkZWFz4oCdLiBJdCBob2xkcyB0aGF0IHRoZSDigJxrbm93bGVkZ2XigJ0gaXMgcHJpbWFyaWx5IGdhaW5lZCBmcm9tIHByZXZpb3VzIOKAnGV4cGVyaWVuY2XigJ0gYW5kICDigJxzZW5zZXPigJ3igJkgd2l0aCBldmlkZW5jZSAo4oCcZXZpZGVudOKAnSkuIA0KDQooV29yZHMgcXVvdGVkIGFib3ZlIGFyZSBzaG93biBpbiB0aGUgd29yZCBjbG91ZCBvZiBlbXBpcmljaXNtLikNCg0KDQpNb3Jlb3ZlciwgYXMgbWVudGlvbmVkIGJlZm9yZSwgdGhlIHNjaG9vbHMgb2YgcGhpbG9zb3BoeSBtaWdodCBiZSBpbmZsdWVuY2VkIGJ5IG90aGVyIHNjaG9vbHMuIEJhc2VkIG9uIHRoZSB3b3JkIGNsb3Vkcywgc29tZSBpbXBvcnRhbnQgYXNzb2NpYXRpb25zIGNhbiBiZSBvYnNlcnZlZCBhbmQgcG9pbnRlZCBvdXQsIHdoaWNoIHdvdWxkIGJlIGhlbHBmdWwgdG8gc3R1ZHkgbm90IG9ubHkgdGhlIHNjaG9vbCBpdHNlbGYgYnV0IGFsc28gZnJvbSBhIGNvbXBhcmF0aXZlIHBlcnNwZWN0aXZlLiANCg0KRm9yIGluc3RhbmNlLCAqKkNhcGl0YWxpc20qKiBhbmQgKipDb21tdW5pc20qKiBhcmUgYm90aCBjb25jZXJuZWQgYWJvdXQgZWNvbm9taWMgc3lzdGVtcyBhbmQgY29uY2VudHJhdGUgb24g4oCcbGFib3Vy4oCdLCDigJxtb25leeKAnSwgYW5kIOKAnGNvbW1vZGl0aWVz4oCdIGFjY29yZGluZyB0byB0aGUgd29yZCBjbG91ZHMuIEJ1dCB0aGV5IGFyZSBhbHdheXMgaW4gdGhlIG9wcG9zaXRlIHBvc2l0aW9uIGluIG1vc3QgZGlzY3Vzc2lvbnMgdGhlc2UgZGF5cyBiZWNhdXNlIHRoZXkgdGhpbmsgdmVyeSBkaWZmZXJlbnRseS4gVGhlIHdvcmRzIOKAnGludGVyZXN04oCdLCDigJxtYXJrZXTigJ0sIOKAnHRyYWRl4oCdLCDigJxlcXVhbOKAnSwgZXRjLiBzdXBwb3J0IENhcGl0YWxpc23igJlzIG1haW4gaWRlYSBvZiAgaW5kaXZpZHVhbCBwcm9maXQgZWFybmluZywgcHJpdmF0ZSBvd25lcnNoaXAgYW5kIGZyZWUgbWFya2V0LiBIb3dldmVyLCBDb21tdW5pc20gYWR2b2NhdGVzIGdvdmVybm1lbnRhbCBjb250cm9sIG92ZXIgcmVzb3VyY2VzIGFuZCBwcm9kdWN0cywgc2hvd24gYnkgdGhlIGhpZ2ggZnJlcXVlbmN5IG9mIOKAnHBvd2Vy4oCdIGFuZCDigJxwb2xpdGljYWzigJ0gaW4gd29yZCBjbG91ZC4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzICJjYXBpdGFsaXN0IiBkb2VzIGFsc28gb2NjdXIgdmVyeSBmcmVxdWVudGx5LCB3aGljaCBtaWdodCBpbmRpY2F0ZSB0aGF0IHRoZXJlIGFyZSBzZW50ZW5jZXMgdG8gYXJndWUgYWdhaW5zdCBvciBtYWtlIGNvbXBhcmlzb24gdG8gQ2FwaXRhbGlzbSBpbiBkaXNjdXNzaW9uIG9mIENvbW11bmlzbSENCg0KYGBge3J9DQoNCg0KZC5jYXAgPC0gd29yZF9jbG91ZCgiY2FwaXRhbGlzbSIsIGRmKQ0KDQoNCnAuY2FwIDwtIHdvcmRjbG91ZChkLmNhcCR3b3JkLCBkLmNhcCRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCmQuY29tIDwtIHdvcmRfY2xvdWQoImNvbW11bmlzbSIsIGRmKQ0KDQoNCnAuY29tIDwtIHdvcmRjbG91ZChkLmNvbSR3b3JkLCBkLmNvbSRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCmBgYA0KDQpBbm90aGVyIGV4YW1wbGUgY291bGQgYmUgdGhlIHJlbGF0aW9uIGRlc2NyaWJlZCBieSB0ZXh0IGRhdGEgYmV0d2VlbiBzY2hvb2xzIG9mICoqQXJpc3RvdGxlKiogYW5kICoqUGxhdG8qKi4gQXJpc3RvdGxlIHdhcyB0aGUgc3R1ZGVudCBvZiBQbGF0byBpbiB0aGUgQWNhZGVteS4gQWx0aG91Z2ggQXJpc3RvdGxl4oCZcyBwaGlsb3NvcGh5IGlzIHJlbGF0aXZlbHkgbW9yZSBwcmFjdGljYWwgdGhhbiBQbGF0b+KAmXMsIHRoZXkgY291bGQgYmUgdHJhY2VkIGJhY2sgdG8gYSBzaW1pbGFyIHNvdXJjZS4gVGhleSBib3RoIGJlbGlldmVkIHRoYXQgYSDigJxqdXN04oCdIHBlcnNvbiB3aXRoIOKAnHZpcnR1ZeKAnSBhbmQgdGhlIOKAnGp1c3TigJ0g4oCcYWN0aW9uc+KAnSBhcmUgZ29vZC4gIA0KDQooV29yZHMgcXVvdGVkIGFib3ZlIGFyZSBzaG93biBpbiB0aGUgd29yZCBjbG91ZCBvZiBQbGF0byBhbmQgQXJpc3RvdGxlLikNCg0KYGBge3J9DQoNCmQucGxhdG8gPC0gd29yZF9jbG91ZCgicGxhdG8iLCBkZikNCg0KDQpwLnBsYXRvIDwtIHdvcmRjbG91ZChkLnBsYXRvJHdvcmQsIGQucGxhdG8kZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KDQpkLmFzIDwtIHdvcmRfY2xvdWQoImFyaXN0b3RsZSIsIGRmKQ0KDQoNCnAuYXMgPC0gd29yZGNsb3VkKGQuYXMkd29yZCwgZC5hcyRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCg0KYGBgDQoNCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCg0KDQpkLmFuYWx5dGljIDwtIHdvcmRfY2xvdWQoImFuYWx5dGljIiwgZGYpDQoNCg0KcC5hbmFseXRpYyA8LSB3b3JkY2xvdWQoZC5hbmFseXRpYyR3b3JkLCBkLmFuYWx5dGljJGZyZXEsDQogICAgICAgICAgc2NhbGU9YygzLDAuMyksDQogICAgICAgICAgbWF4LndvcmRzPTIwMCwNCiAgICAgICAgICBtaW4uZnJlcT0xLA0KICAgICAgICAgIHJhbmRvbS5vcmRlcj1GQUxTRSwNCiAgICAgICAgICByb3QucGVyPTAuMywNCiAgICAgICAgICByYW5kb20uY29sb3I9RkFMU0UsDQogICAgICAgICAgY29sb3JzPWJyZXdlci5wYWwoOSwiQmx1ZXMiKSkNCg0KZC5jb250IDwtIHdvcmRfY2xvdWQoImNvbnRpbmVudGFsIiwgZGYpDQoNCg0KcC5jb250IDwtIHdvcmRjbG91ZChkLmNvbnQkd29yZCwgZC5jb250JGZyZXEsDQogICAgICAgICAgc2NhbGU9YygzLDAuMyksDQogICAgICAgICAgbWF4LndvcmRzPTIwMCwNCiAgICAgICAgICBtaW4uZnJlcT0xLA0KICAgICAgICAgIHJhbmRvbS5vcmRlcj1GQUxTRSwNCiAgICAgICAgICByb3QucGVyPTAuMywNCiAgICAgICAgICByYW5kb20uY29sb3I9RkFMU0UsDQogICAgICAgICAgY29sb3JzPWJyZXdlci5wYWwoOSwiQmx1ZXMiKSkNCmBgYA0KDQoNCiMjIEVtb3Rpb25hbCBEaWZmZXJlbmNlIGJldHdlZW4gU2Nob29scw0KDQpCeSBvYnNlcnZpbmcgdGhlIGludGVyYWN0aXZlIGJhcnBsb3QgYnkgc2Nob29scyBiZWxvdywgeW91IHdpbGwgdW5kZXJzdGFuZCB0aGUgYXR0aXR1ZGVzIG9mIHNjaG9vbHMgYW5kIGhvdyB0aGV5IGVtb3Rpb25hbGx5IGV4cHJlc3MgdGhlbXNlbHZlcy4gQWxtb3N0IGFsbCBzY2hvb2xzIHJlY2VpdmUgYSBoaWdoIHNlbnRpbWVudCBzY29yZSBpbiB0cnVzdC4gRmVtaW5pc20gc2hvd3MgbW9yZSBhbnRpY2lwYXRpb24gYW5kIGxlc3MgZGlzZ3VzdCBpbiB0aGVpciBzZW50ZW5jZXMuIFBsYXRvIHdpbnMgaW4gam95LCB3aGljaCBjb3JyZXNwb25kcyB0byDigJx2aXJ0dWXigJ0sIOKAnGdvb2TigJ0gYW5kIOKAnGxvdmXigJ0gaW4gdGhlIHdvcmQgY2xvdWQuIFRoZSBhbmdlciBhbmQgc2FkbmVzcyBpbiBDb21tdW5pc20gY291bGQgYWxzbyBwb3NzaWJseSBiZSBhIHNpZ24gb2YgaGlzdG9yaWNhbCByZXZvbHV0aW9uIGhhcHBlbmluZyBhbmQgY2xhc3Mgc3RydWdnbGluZyByZWxhdGVkIHRvIGl0ISANCg0KYGBge3J9DQoNCiMgc2FtcGxpbmcgMTAwMCBzZW5ldGVuY2VzIGZvciBlYWNoIHNjaG9vbCANCmdldF9zZW50IDwtIGZ1bmN0aW9uKHNjaG9vbCwgZGYpew0KICBkZi5zZW50IDwtIGRmICU+JSBmaWx0ZXIoc2Nob29sID09IHNjaG9vbCkgJT4lIA0KICBzZWxlY3Qoc2VudGVuY2VfbG93ZXJlZCkNCg0KICBzZW50LnNjaG9vbCA8LSBzYW1wbGVfbihkZi5zZW50LCAxMDAwKQ0KICBzZW50LnNjaG9vbDEgPC0gZ2V0X25yY19zZW50aW1lbnQoc2VudC5zY2hvb2wkc2VudGVuY2VfbG93ZXJlZCwgY2wgPSBOVUxMLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlID0gImVuZ2xpc2giLCBsb3dlcmNhc2UgPSBUUlVFKQ0KDQp9DQoNCmBgYA0KDQoNCmBgYHtyfQ0Kc2Nob29sLmxpc3QgPC0gdW5pcXVlKGRmJHNjaG9vbCkNCmZ1bGwuc2VudCA8LSBkYXRhLmZyYW1lKG1hdHJpeChuY29sID0gMCwgbnJvdyA9IDgpKQ0KbmFtZXMgPC0gYygpDQogIA0KZm9yIChpIGluIDE6bGVuZ3RoKHNjaG9vbC5saXN0KSkgew0KICBkZi5uZXcgPC0gZ2V0X3NlbnQoc2Nob29sLmxpc3RbaV0sIGRmKQ0KICB0IDwtIGFzLmRhdGEuZnJhbWUoY29sU3Vtcyhwcm9wLnRhYmxlKGRmLm5ld1ssIDE6OF0pKSkNCiAgDQogIGZ1bGwuc2VudCA8LSBjYmluZChmdWxsLnNlbnQsIHQpDQogICMgbmFtZXMgPC0gYXBwZW5kKG5hbWVzLCBzY2hvb2wubGlzdFtpXSkNCiAgIyBjb2xuYW1lcyh0KSA8LSBuYW1lcyANCiAgcHJpbnQoc2Nob29sLmxpc3RbaV0pDQogIA0KfQ0KDQpjb2xuYW1lcyhmdWxsLnNlbnQpIDwtIHNjaG9vbC5saXN0DQpmdWxsLnNlbnQgPC0gYXMuZGF0YS5mcmFtZShmdWxsLnNlbnQpDQoNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCmZzLnVwZGF0ZSA8LSByb3duYW1lc190b19jb2x1bW4oZnVsbC5zZW50LCAiZW1vdGlvbiIpDQpmcy51cGRhdGUgPC0gZnMudXBkYXRlICU+JSBwaXZvdF9sb25nZXIoc2Nob29sLmxpc3QsIG5hbWVzX3RvID0gInNjaG9vbCIsIHZhbHVlc190byA9ICJwcm9iIikNCiMgaGVhZChmcy51cGRhdGUpDQoNCiMga2FibGUoZnVsbC5zZW50LCBjYXB0aW9uID0gIkVtb3Rpb25zIGFtb25nIFNjaG9vbHMiKSANCg0KDQpmcy51cGRhdGUgJT4lIHBsb3RfbHkoeCA9IH5lbW90aW9uLCB5ID0gfnByb2IsIGNvbG9yID0gfnNjaG9vbCwgd2lkdGggPSAxMDAwKQ0KDQoNCmZzLm1vc3QgPC0gZnMudXBkYXRlICU+JSBncm91cF9ieShlbW90aW9uKSAlPiUNCiAgdG9wX24oMSwgcHJvYikNCg0Ka2FibGUoZnMubW9zdCwgY2FwdGlvbiA9ICJFbW90aW9ucyBXaW5uZXIgYW1vbmcgU2Nob29scyIpIA0KDQpgYGANCg0KIyMjIERpc2N1c3Npb24gDQpJbiB0aGlzICpQaGlsb3NvcGh5IGZvciBFdmVyeW9uZSosIHF1ZXN0aW9ucyBhbmQgZmVhdHVyZXMgYW5kIHVuZGVyc3RhbmRpbmcgYmFzZWQgb24gdGV4dCBkYXRhIG1pbmluZyBvZiBjb3JwdXMgb2YgbWFqb3Igc2Nob29scyBvZiBwaGlsb3NvcGh5IHdlcmUgZGlzY3Vzc2VkIGluY2x1ZGluZyBzZW50ZW5jZSBsZW5ndGhzLCB3b3JkIGZyZXF1ZW5jeSwgYW5kIHNlbnRpbWVudCBhbmFseXNpcy4gRG9uJ3QgZm9yZ2V0IHRvIGFsd2F5cyBjaGVjayBtb3JlIGFib3V0IGhpc3Rvcnkgb2YgcGhpbG9zb3BoeSBhZnRlciByZWFkIHRoaXMgaW5zaWdodHMtZ2Fpbm5pZyBzdG9yeSEgDQoNCmBgYHtyfQ0KDQojIEVuZCBsaW5lIA0KDQpgYGA=